package com.tdd;

import static junit.framework.Assert.assertEquals;

import java.math.BigDecimal;

import org.junit.Before;
import org.junit.Test;

public class BinaryOperatorsTest {
	HpStack stack;

	@Before
	public void init() {
		stack = new HpStack();
		stack.push(new BigDecimal(42));
		stack.push(new BigDecimal(10));
	}

	private void validateResults(Operation op, BigDecimal expected) {
		op.operate(stack);
		assertEquals(expected, stack.pop());
	}

	@Test
	public void divide() {
		validateResults(new Divide(), new BigDecimal(4.2));
	}
	
	@Test
	public void multiply() {
		validateResults(new Multiply(), new BigDecimal(420));
	}

	@Test
	public void subtract() {
		validateResults(new Minus(), new BigDecimal(32));
	}

	@Test
	public void add() {
		validateResults(new Plus(), new BigDecimal(52));
	}
}
